import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

// 获取当前文件的目录路径（ES模块中的 __dirname 替代方案）
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 文件路径 - 修正为相对于当前脚本位置的路径
const FROM_DEFAULT_PATH = path.join(__dirname, 'default.json');
const PROOFREAD_STATUS_PATH = path.join(__dirname, 'proofread_status.json');
const GET_DEFAULT_PATH = path.join(__dirname, '../get/default.json');

async function migrateTranslations() {
    try {
        console.log('开始迁移翻译数据...\n');
        
        // 读取文件
        console.log('正在读取文件...');
        const fromData = JSON.parse(fs.readFileSync(FROM_DEFAULT_PATH, 'utf8'));
        const proofreadStatus = JSON.parse(fs.readFileSync(PROOFREAD_STATUS_PATH, 'utf8'));
        const getData = JSON.parse(fs.readFileSync(GET_DEFAULT_PATH, 'utf8'));
        
        console.log(`✓ 成功读取源文件，共 ${Object.keys(fromData).length} 条记录`);
        console.log(`✓ 成功读取校验状态文件，共 ${Object.keys(proofreadStatus).length} 条已校验记录`);
        console.log(`✓ 成功读取目标文件，共 ${Object.keys(getData).length} 条记录\n`);
        
        let updatedCount = 0;
        let skippedCount = 0;
        let notFoundCount = 0;
        
        // 遍历源文件中的每个条目
        for (const [chineseKey, item] of Object.entries(fromData)) {
            const id = item.$id;
            
            if (!id) {
                console.log(`⚠️  跳过：条目 "${chineseKey}" 没有 $id 字段`);
                skippedCount++;
                continue;
            }
            
            // 检查是否已校验完成
            if (proofreadStatus[id.toString()] === true) {
                // 查找目标文件中对应的条目
                let targetKey = null;
                for (const [key, targetItem] of Object.entries(getData)) {
                    if (targetItem.$id === id) {
                        targetKey = key;
                        break;
                    }
                }
                
                if (targetKey) {
                    // 保存原来的翻译用于比较
                    const oldTranslation = getData[targetKey]['en-US'];
                    const newTranslation = item['en-US'];
                    
                    // 更新翻译
                    getData[targetKey]['en-US'] = newTranslation;
                    updatedCount++;
                    
                    console.log(`✅ 更新 ID: ${id}`);
                    console.log(`   中文: ${chineseKey}`);
                    console.log(`   原翻译: ${oldTranslation}`);
                    console.log(`   新翻译: ${newTranslation}`);
                    console.log('');
                } else {
                    console.log(`❌ 未找到：ID ${id} 在目标文件中不存在`);
                    console.log(`   中文: ${chineseKey}`);
                    console.log(`   翻译: ${item['en-US']}`);
                    console.log('');
                    notFoundCount++;
                }
            } else {
                // 未校验完成，跳过
                skippedCount++;
            }
        }
        
        // 写入更新后的目标文件
        if (updatedCount > 0) {
            console.log('正在保存更新后的文件...');
            fs.writeFileSync(GET_DEFAULT_PATH, JSON.stringify(getData, null, 4), 'utf8');
            console.log('✓ 文件保存成功\n');
        }
        
        // 输出统计信息
        console.log('='.repeat(50));
        console.log('迁移完成！统计信息：');
        console.log(`✅ 成功更新: ${updatedCount} 条`);
        console.log(`⏭️  跳过未校验: ${skippedCount} 条`);
        console.log(`❌ 目标文件中未找到: ${notFoundCount} 条`);
        console.log(`📊 总处理: ${Object.keys(fromData).length} 条`);
        console.log('='.repeat(50));
        
    } catch (error) {
        console.error('❌ 迁移过程中发生错误:', error.message);
        console.error(error.stack);
        process.exit(1);
    }
}

// 执行迁移
migrateTranslations(); 